// 测试 Number.prototype 中定义的属性(含值属性和函数属性)

console.log( Number.prototype.constructor == Number ); // true

let p = 1234.5678;
console.log( p, typeof p );

let x = new Number(p);
console.log( x, typeof x );

// Number.prototype.toFixed(digits)
// 用定点表示法来格式化一个数值 (参数值的范围是[0, 100])
let h = x.toFixed(2);
console.log( h, typeof h );

h = x.toFixed(5);
console.log( h, typeof h );

console.log( '- '.repeat(10) );

// Number.prototype.toPrecision(precision)
// 以指定的精度返回该数值对象的字符串形式
let k = x.toPrecision(10);
console.log( k, typeof k );

let y = 0.0012345678;
// 首先将原始值自动包裹到一个Number实例中才能调用Number原型上的方法
console.log( y.toPrecision(5) );

console.log( '- '.repeat(10) );

// Number.prototype.toExponential(fractionDigits)
// 以指数表示法返回该数值字符串形式
console.log( x.toExponential(3) );
console.log( y.toExponential(3) );

console.log( '- '.repeat(10) );

// Number.prototype.valueOf()
// 获取Number实例中所包裹的原始值
let t = x.valueOf();
console.log( t, typeof t );

// Number.prototype.toString()
let s = x.toString();
console.log( s, typeof s );

// Number.prototype.toLocaleString()
s = x.toLocaleString();
console.log( s, typeof s );